<?php

namespace app\store\service;

use think\facade\Db;

class AgentService
{

    /**
     * 代理列表
     */
    function list($data) {
        $list = Db::name('user')
            ->alias('u')
            ->join('xyl_user_auth ua', 'u.user_id = ua.id', 'left')
            ->join('xyl_agent_area a', 'a.uid = u.user_id', 'left')
        // Db::name('agent_area')
        // ->alias('a')
            ->where('u.store_id', session('store_id'))
            ->where('u.is_agent', '>', 0)
            ->field('u.nickname,u.avatar,ua.phone,ua.id,u.is_agent,u.agent_time,a.pid,a.cid,a.aid')
            ->order('u.agent_time', 'desc')
            ->paginate(10)->each(function ($item) {
            $apply_area = '';
            if ($item['is_agent'] == 1) {
                $apply_area = Db::name('province')->where('PROVINCE_CODE', $item['pid'])->value('PROVINCE_NAME');
            }
            if ($item['is_agent'] == 2) {
                $p_name = Db::name('province')->where('PROVINCE_CODE', $item['pid'])->value('PROVINCE_NAME');
                $c_name = Db::name('city')->where('CITY_CODE', $item['cid'])->value('CITY_NAME');
                $apply_area = $p_name . '-' . $c_name;
            }
            if ($item['is_agent'] == 3) {
                $p_name = Db::name('province')->where('PROVINCE_CODE', $item['pid'])->value('PROVINCE_NAME');
                $c_name = Db::name('city')->where('CITY_CODE', $item['cid'])->value('CITY_NAME');
                $a_name = Db::name('area')->where('AREA_CODE', $item['aid'])->value('AREA_NAME');
                $apply_area = $p_name . '-' . $c_name . '-' . $a_name;
            }
            if ($item['is_agent'] == 1) {
                $apply_area = Db::name('province')->where('PROVINCE_CODE', $item['pid'])->value('PROVINCE_NAME');
            }
            $item['agent_time'] = date('Y-m-d H:i:s', $item['agent_time']);
            $item['apply_area'] = $apply_area;
            return $item;
        });
        return $list;
    }

    /**
     * 审核操作
     * 1、通过 2、拒绝
     */
    public function auditRst($id, $type, $row)
    {
        if ($type == 2) {
            $rst = Db::name('agent_area')->where('store_id', session('store_id'))
                ->where('id', $id)->update(['status' => 3, 'update_time' => time()]);
            return $rst;
        } else {
            Db::startTrans();
            try {
                Db::name('agent_area')->where('store_id', session('store_id'))
                    ->where('id', $id)->update(['status' => 2]);

                Db::name('user')->where('user_id', $row['uid'])->update(['agent_time'=>time(),'is_agent' => $row['type']]);
            } catch (\Exception $e) {
                // 回滚事务
                // echo $e->getMessage();
                Db::rollback();
                return false;
            }
            Db::commit();
            return true;
        }
    }

    /**
     * 申请内容
     */
    public function findOne($id)
    {
        $rst = Db::name('agent_area')->where('delete_time', 0)->where('store_id', session('store_id'))->where('id', $id)->find();
        return $rst;
    }

    /**
     * 待审核列表
     */
    public function auditList($data)
    {
        $list = Db::name('agent_area')
            ->alias('a')
            ->where('a.store_id', session('store_id'))
            ->where('a.status', 1)
            ->where('u.store_id', session('store_id'))
            ->join('xyl_user u', 'a.uid = u.user_id', 'left')
            ->join('xyl_user_auth ua', 'u.user_id = ua.id', 'left')
            ->field('a.id,a.type,a.pid,a.cid,a.aid,a.create_time,u.nickname,u.avatar,ua.phone')
            ->order('a.create_time', 'desc')
            ->paginate(10)->each(function ($item) {
            $apply_area = '';
            if ($item['type'] == 1) {
                $apply_area = Db::name('province')->where('PROVINCE_CODE', $item['pid'])->value('PROVINCE_NAME');
            }
            if ($item['type'] == 2) {
                $p_name = Db::name('province')->where('PROVINCE_CODE', $item['pid'])->value('PROVINCE_NAME');
                $c_name = Db::name('city')->where('CITY_CODE', $item['cid'])->value('CITY_NAME');
                $apply_area = $p_name . '-' . $c_name;
            }
            if ($item['type'] == 3) {
                $p_name = Db::name('province')->where('PROVINCE_CODE', $item['pid'])->value('PROVINCE_NAME');
                $c_name = Db::name('city')->where('CITY_CODE', $item['cid'])->value('CITY_NAME');
                $a_name = Db::name('area')->where('AREA_CODE', $item['aid'])->value('AREA_NAME');
                $apply_area = $p_name . '-' . $c_name . '-' . $a_name;
            }
            if ($item['type'] == 1) {
                $apply_area = Db::name('province')->where('PROVINCE_CODE', $item['pid'])->value('PROVINCE_NAME');
            }
            $item['create_time'] = date('Y-m-d H:i:s', $item['create_time']);
            $item['apply_area'] = $apply_area;
            return $item;
        });
        return $list;
    }

}
